# Copyright (c) Stanford University, The Regents of the University of
#               California, and others.
#
# All Rights Reserved.
#
# See Copyright-SimVascular.txt for additional details.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject
# to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# in __init__.py
from __future__ import absolute_import

import site
import sys
# print(site.getsitepackages())
# sys.path.append(site.getsitepackages()[0]+'/sv_vis')
from .actor import *
from .img import *
from .renfun import *
from .init import *
from .poly import *
from .vol import *
import vtk

try:
    import Repository
except:
    from sv import Repository
# ------------
# vis_register
# ------------
gReposObjDisp = {}

def register(ren,objName):
    global gReposObjDisp
        
    try:
        gReposObjDisp[objName]
        if ren[0] in gReposObjDisp[objName]:
            raise ValueError("ERROR: "+ objName+ " already exists in ren " + ren[0])
        else:
            gReposObjDisp[objName].append(ren[0])
    except:
        gReposObjDisp[objName] = {ren[0]}
    return
        
# --------------
# vis_unregister
# --------------
def unregister(ren, objName):
    global gReposObjDisp
    try:
        gReposObjDisp[objName]
    except:
        raise ValueError("ERROR: object not registered!")
        
    if ren[0] not in gReposObjDisp[objName]:
        raise ValueError("ERROR: object not registered in "+ren[0])
    else:
        gReposObjDisp[objName].remove(ren[0])
        if not gReposObjDisp[objName]:
            del gReposObjDisp[objName]
    return 